package system

import (
	"encoding/base64"
	"strings"

	"github.com/google/uuid"
	"go-api-template/api/models"
	"go-api-template/internal/util/timeUtil"
	"gorm.io/gorm"
)

// User 系统用户表
type User struct {
	models.BaseModel
	Account  string `gorm:"column:account;index"`  // 平台账户
	Username string `gorm:"column:username;index"` // 用户名
	Email    string `gorm:"column:email"`          // 邮箱
	Phone    int    `gorm:"column:phone"`          // 手机号
	Password string `gorm:"column:password"`       // 密码
	Avatar   string `gorm:"column:avatar"`         // 头像
	IsAdmin  int    `gorm:"column:is_admin"`       // 是否为管理员(1:是, 2:否)
}

func (User) TableName() string {
	return "system_user"
}

func (u *User) BeforeCreate(tx *gorm.DB) (err error) {

	// UUID
	u.ID = strings.Join(strings.Split(uuid.New().String(), "-"), "")

	// 默认账户
	if u.Account == "" {
		u.Account = timeUtil.TimeStamp()
	}

	// 管理员
	if u.IsAdmin == 0 {
		u.IsAdmin = 2
	}

	// 加密密码
	u.Password = base64.StdEncoding.EncodeToString([]byte(u.Password))
	return
}

// UserRole 用户角色表
type UserRole struct {
	models.BaseModel
	UserId string `gorm:"column:user_id"`
	RoleId string `gorm:"column:role_id"`
}

func (UserRole) TableName() string {
	return "system_user_role"
}
